struct ListNode
{
	int m_nValue;
	ListNode* m_pNext;
};

//巧妙地使用了递归
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
	if(pHead1==NULL)
		return pHead2;
	else if(pHead2==NULL)
		return pHead1;
	
	ListNode* pMergedHead = NULL;
	
	if(pHead1->m_nValue < pHead2->m_nValue)
	{
		pMergedHead = pHead1;
		pMergedHead->m_pNext = Merge(pHea1->m_pNext, pHead2);
	}
	else
	{
		pMergedHead = pHead2;
		pMergedHead->m_pNext = Merge(pHea1, pHead2->m_pNext);
	}

	return pMergedHead;
}



